//引入服务器文件
const Koa=require('koa')
const Router=require('koa-router')
//中间件的使用
const logger=require('./untill/logger')
const bodyparser=require('./untill/body-parser')
//连接数据库
const query=require('./db/index')

//起服务
const app=new Koa()
//实例化路由
const router=new Router()

//日志打印文件--->中间件
app.use(logger())

//bodybarpser中间件
app.use(bodyparser())

//测试
router.post('/test',async (ctx,next)=>{
   // console.log(ctx.request.body)
    ctx.body='这是测试页'
})
//注册路由
router.post('/register',async (ctx,next)=>{
    //console.log(ctx.request.body)
    let {username,pwd,mobile}=ctx.request.body;
    //容错处理
    if(!username||!pwd||!mobile){
        return ctx.body={
            code:1,
            msg:'参数不全'
        }
    }
    //查询该用户是否存在
    let res=await query('select * from users where username=?',[username])
    //console.log(res)
    if(res.length){
        return ctx.body={
            code:2,
            msg:'该用户已存在'
        }
    }
    //否则 注册该用户
    let user=await query('insert into users (username,pwd,mobile) values (?,?,?)',[username,pwd,mobile])
    if(user.affectedRows===1){
        ctx.body={
            code:0,
            msg:'注册成功'
        }
    }else{
        ctx.body={
            code:3,
            msg:'注册失败'
        }
    }
})
//登录路由
router.post('/login',async (ctx,next)=>{
    //获取前台返回的参数
    let {username,pwd}=ctx.request.body;
    //容错处理
    if(!username||!pwd){
        return ctx.body={
            code:1,
            msg:'参数不全'
        }
    }
    //登录
    let res=await query('select * from users where username=? and pwd=?',[username,pwd])
    if(res.length>0){
        ctx.body={
            code:0,
            msg:'登录成功'
        }
    }else{
        ctx.body={
            code:2,
            msg:'用户名或密码错误'
        }
    }
})
//获取成绩列表接口
router.get('/list',async (ctx,next)=>{
    //查询成绩表
    let data=await query('select * from scores')
    //返回给前台
    ctx.body={
        code:0,
        data,
        msg:'获取列表成功'
    }
})
//添加成绩列表接口
router.post('/list',async (ctx,next)=>{
    //获取前台数据
    let {name,age,score}=ctx.request.body;
    //非空验证
    if(!name||!age||!score){
        return ctx.body={
            code:1,
            msg:'参数不全'
        }
    }
    //添加
    let res=await query('insert into scores (name,age,score) values (?,?,?)',[name,age,score])
    if(res.affectedRows===1){
        ctx.body={
            code:0,
            msg:'添加数据成功'
        }
    }else{
        ctx.body={
            code:2,
            msg:'添加数据失败'
        }
    }
})
//修改成绩列表接口
router.put('/list',async (ctx,next)=>{
    //获取前台数据
    let {id,score}=ctx.request.body
    //非空校验
    if(!id||!score){
        return ctx.body={
            code:1,
            msg:'参数不全'
        }
    }
    //修改
    let res=await query('update scores set score=? where id=?',[score,id])
    if(res.affectedRows===1){
        ctx.body={
            code:0,
            msg:'修改数据成功'
        }
    }else{
        ctx.body={
            code:2,
            msg:'修改数据失败'
        }
    }
})
//删除成绩列表接口
router.delete('/list',async (ctx,next)=>{
    //获取前台数据
    let {id}=ctx.query
    //非空验证
    if(!id){
        return ctx.body={
            code:1,
            msg:'参数不全'
        }
    }
    //删除
    let res = await query('delete from scores where id=?',[id])
    if(res.affectedRows>=1){
        ctx.body={
            code:0,
            msg:'删除数据成功'
        }
    }else{
        ctx.body={
            code:2,
            msg:'删除数据失败'
        }
    }
})

//启动路由
app.use(router.routes())
//丰富路由
app.use(router.allowedMethods())

//监听
app.listen(3000,()=>{
    console.log('koa is running')
})